package modele;

import java.awt.Color;

public class Cercle extends Point {
	
	private Point Origine;
	
	private int Diametre; // Origine - Extremité
	 // Abcisse (x) et ordonnée (y) du centre
	
	private int nbCercles = 0;
	
	public void setOrigine(Point origine) {
		Origine = origine;
	}
	
// Constructeur par default
	public Cercle () {
         this.Diametre = 0;
		 nbCercles++;}
	
// Constructeurs secondaires
	
	//Construit le cercle de centre (xo,yo) et de rayon R 
	public Cercle (Point o, int r ) {
		    Origine = o.createClone();
			this.Diametre = r;
			nbCercles++;} 
	
  /*public Cercle (int a, int b, double r) {
		super(a,b);
		this.Rayon = r;	} */
	
	//Construit le cercle avec une couleur
	public Cercle (Point o, int r, Color couleur) {
		Origine = o.createClone();
		this.Diametre = r;
		this.couleur = couleur;
		nbCercles++; }
		
	/*public Cercle (int a, int b, double r, Color couleur) {
		super(a,b);
		this.Rayon = r;	
		this.couleur = couleur; }*/
		
	// toString
		/*public String toString() {
			return new String("Coordonnées du point de l'origine du cercle" 
		+ super.toString() + " \n\t " + "et de rayon" + this.Rayon);
		}*/
	
	 public String toString() {
		 return new String ("Le "+ nbCercles+ " eme cercle a pour origine " 
					+ this.Origine.toString() + "\n\t " + "et un rayon de : " + 
				 this.Diametre);}	 
	/* 
	 public String toString() {
		 return new String ("coordonnées du point de l'origine du cercle" 
					+ super.toString(Origine) + "\n\t " + "et de rayon" + 
				 this.Rayon);}	*/
	 
   //Constructeur secondaire (Clone un cercle)
	 public Cercle createClone() {
		 Cercle Resultat = new Cercle(this.Origine.createClone(),
				 this.Diametre, this.getCouleur());
		 return Resultat;}
	 
   //Constructeur secondaire qui crée un cercle symetrique à l'origine
		public Cercle createSymetrieO() {
			Cercle Resultat = new Cercle(this.Origine.createSymetrieO(),
					-this.getRayon());
			return Resultat;} 
		
	// equals
		
	 	 
//Observateurs 
	 
    //Observateurs canoniques 
	  public Point getOrigine() {
	    return this.Origine;}
	 		
	  public int getRayon(){
	    return this.Diametre;}

//Autres Observateurs
	  
	//Circonférence Cercle
	 public double Circonference() {
		return 2*Math.PI*this.Diametre;}
	 
	//Aire du Cercle
	 public double Aire() {
		 return Math.PI*this.Diametre*this.Diametre;} 	
     
    //Mutateurs  
     public void setRayon(int r) {
    	 this.Diametre = r;}
     
     public void SymetrieRayon(){
    	 this.Diametre = -this.Diametre;}
     
     
     
     
     
     
     
}
